<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    // 语法： async是用来修饰 方法的。  await 后面是跟了一个promise封装的异步请求
    // async function fn(){
    //   await  Promsie封装的异步方法
    // }

    // 作用
    // 1.async修饰的方法  默认会返回一个promise对象
    // 2.async修饰的方法 如果return了值，那么这个值 可以在then(res=>{})的回调函数中拿到
    // 3.await会阻碍async函数的执行。等到await后面跟的异步方法执行完成之后 才会继续执行async中的代码

    // 1.async修饰的方法  默认会返回一个promise对象
    // async function fn(){
    //   console.log(123)
    // }
    // console.log(fn())


    // 2.async修饰的方法 如果return了值，那么这个值 可以在then(res=>{})的回调函数中拿到
    // async function fn(){
    //   return 123
    // }
    // fn().then(res=>{
    //   console.log(res)
    // })

    // 3.await会阻碍async函数的执行。等到await后面跟的异步方法执行完成之后 才会继续执行async中的代码
    function aysncFn (){
      return new Promise((resolve,reject)=>{
        setTimeout(() => { 
          console.log(1)
          resolve()
        }, 2000);
      })
    }

    async function fn(){
      console.log(2)
      await aysncFn()
      console.log(3)
    }

    fn()
  </script>
</body>
</html>